Next: Implementation Parameters, Previous: Numerical Functions, Up: Numbers [Contents][Index]
This package also provides an implementation of the Common Lisp random number generator. It uses its own additive-congruential algorithm, which is much more likely to give statistically clean random numbers than the simple generators supplied by many operating systems.
This function returns a random nonnegative number less
than number, and of the same type (either integer
or floating-point). The state argument should be a
random-state object that holds the state of the
random number generator. The function modifies this state
object as a side effect. If state is omitted, it
defaults to the internal variable
cl--random-state, which contains a
pre-initialized default random-state object.
(Since any number of programs in the Emacs process may be
accessing cl--random-state in interleaved
fashion, the sequence generated from this will be
irreproducible for all intents and purposes.)
This function creates or copies a
random-state object. If state is
omitted or nil, it returns a new copy of
cl--random-state. This is a copy in the sense
that future sequences of calls to (cl-random
n) and (cl-random n
s) (where s is the new
random-state object) will return identical sequences of
random numbers.
If state is a random-state object,
this function returns a copy of that object. If
state is t, this function returns a
new random-state object seeded from the date and
time. As an extension to Common Lisp, state may
also be an integer in which case the new object is seeded
from that integer; each different integer seed will result in
a completely different sequence of random numbers.
It is valid to print a random-state object to
a buffer or file and later read it back with
read. If a program wishes to use a sequence of
pseudo-random numbers which can be reproduced later for
debugging, it can call (cl-make-random-state t)
to get a new sequence, then print this sequence to a file.
When the program is later rerun, it can read the original
run’s random-state from the file.
This predicate returns t if object
is a random-state object, or nil
otherwise.
Next: Implementation Parameters, Previous: Numerical Functions, Up: Numbers [Contents][Index]